// ConsoleApplication11.cpp : Defines the entry point for the console application.
/*
Scrivere un programma che, data una matrice quadrata di N elementi si deve inizializzare con un carattere a caso uguale
per tutti gli elementi, l'utente, attraverso il menù, deve assegnare un carattere a due elementi a caso,
una volta fatto ciò si vuole visualizzare la matrice e si vuole ottenere, tramite apposito messaggio, la distanza
tra gli elementi generati casualmente
*/

#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <time.h>

#define LEN 3

using namespace std;

void menu();
void inizializza(char matrice[][LEN], char carattere);
void assegna(char matrice[][LEN], char carattere, int x1, int x2, int y1, int y2);
void vismat(char matrice[][LEN]);
void visdis(int x1, int x2, int y1, int y2);

int main()
{
	srand(time(NULL));
	menu();
	system("pause");
    return 0;
}

void menu()
{
	char matrice[LEN][LEN];
	char carattere='_';
	int x1 = 0, x2 = 0, y1 = 0, y2 = 0;
	int scelta;
	do
	{
		system("cls");
		printf("1. Inizializza\n");
		printf("2. Assegna\n");
		printf("3. Visualizza matrice\n");
		printf("4. Visualizza distanza\n");
		cin >> scelta;
		switch (scelta)
		{
		case 1:
			inizializza(matrice, carattere);
			break;
		case 2:
			do
			{
			x1 = rand() % LEN;
			y1 = rand() % LEN;
			x2 = rand() % LEN;
			y2 = rand() % LEN;
			} while ((x1 == x2) && (x1 == x2));
			assegna(matrice, carattere, x1, x2, y1, y2);
			break;

		case 3:
			vismat(matrice);
			break;
		case 4:
			visdis(x1, x2, y1, y2);
			break;
		}
	} while (scelta != 0);
}

void inizializza(char matrice[][LEN], char carattere)
{
	carattere = (char)rand() % 128;
	for (int j = 0; j < LEN; j++)
	{
		for (int i = 0; i < LEN; i++)
		{
			matrice[j][i] = carattere;
		}
	}
}

void assegna(char matrice[][LEN], char carattere, int x1, int x2, int y1, int y2)
{
	printf("Inserisci un carattere");
	cin >> carattere;
	matrice[x1][y1] = carattere;
	matrice[x2][y2] = carattere;
}

void vismat(char matrice[][LEN])
{
	for (int j = 0; j < LEN; j++)
	{
		for (int i = 0; i < LEN; i++)
		{
			printf("%c ", matrice[j][i]);
		}
		printf("\n");
	}
	system("pause");
}

void visdis(int x1, int x2, int y1, int y2)
{
	double distanza;
	distanza= sqrt ((double)(((x2*x2) - (x1*x1)) + ((y2*y2) - (y1*y1))));
	printf("La distanza è %lf", distanza);
	system("pause");
}